热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

词条|笔者_Word2VecfastTextGlove训练词向量

篇首语:本文由编程笔记#小编为大家整理,主要介绍了Word2VecfastTextGlove训练词向量相关的知识,希望对你有一定的参考价值。Word2Vec

篇首语:本文由编程笔记#小编为大家整理,主要介绍了Word2VecfastTextGlove训练词向量相关的知识,希望对你有一定的参考价值。



Word2Vec

环境:
gensim 3.5.0
python 3.6.1


训练

import logging
import os.path
import sys
import multiprocessing
from gensim.corpora import WikiCorpus
from gensim.models import Word2Vec
from gensim.models.word2vec import LineSentence
program = os.path.basename('train_word2vec_model')
logger = logging.getLogger(program)
logging.basicConfig(format='%(asctime)s: %(levelname)s: %(message)s')
logging.root.setLevel(level=logging.INFO)
logger.info("running %s" % ' '.join(sys.argv))
inp='./data/cleaned_tweets_text_160W.csv'
outp='Word2vec_model/word2vec_model_160w_200d'
n_dim=200
model = Word2Vec(LineSentence(inp), size=n_dim, window=5, min_count=5,
workers=multiprocessing.cpu_count())
model.save(outp)

使用

import gensim
outp='Word2vec_model/word2vec_model_160w_200d'
model = gensim.models.Word2Vec.load(outp)

model['happy']

array([ -7.10430890e-02, -5.29273868e-01, 4.72357810e-01,
6.88659430e-01, -2.42118329e-01, -9.04537499e-01,
3.61087114e-01, -3.96869183e-01, -1.67573178e+00,
...
1.18314767e+00, -1.24723041e+00, 1.19374382e+00,
3.74429256e-01, 1.68333733e+00], dtype=float32)

result = model.most_similar(u"sad",topn=10)
for e in result:
print(e[0],e[1])

sad" 0.760986328125
upset 0.7119562029838562
sadd 0.7007699012756348
depressed 0.6737781763076782
bummed 0.6687890291213989
saad 0.6555933952331543
upsetting 0.6473105549812317
devastated 0.6356861591339111
disappointed 0.6215260624885559
heartbroken 0.5960309505462646

# man - woman = king - queen
# man - woman = husband - wife
# man - woman = boy - girl
model.most_similar(['woman', 'boy'], ['man'], topn=1)

[(‘girl’, 0.6189800500869751)]

print (model.doesnt_match(u"happy sad like desk".split()))

desk


fastText

环境:
gensim 3.5.0
python 3.6.1

安装fasttext
可见:https://github.com/facebookresearch/fastText/tree/master/python

$ git clone https://github.com/facebookresearch/fastText.git
$ cd fastText
$ pip install .

训练

from gensim.models import FastText
from gensim.models.word2vec import LineSentence
import logging
import os.path
import sys
program = os.path.basename('fast-text')
logger = logging.getLogger(program)
logging.basicConfig(format='%(asctime)s: %(levelname)s: %(message)s')
logging.root.setLevel(level=logging.INFO)
logger.info("running %s" % ' '.join(sys.argv))
inp='./data/cleaned_tweets_text_160W.csv'
outp='fasttext_model/fasttext_model_160w_200d'
n_dim=200
model = FastText(LineSentence(inp), size=n_dim, window=5, min_count=5)
model.save(outp)

使用

from gensim.models import FastText
# 使用:模型得保存与加载
outp='../word-Vectorization/fasttext_model/fasttext_model_160w_200d'
model = FastText.load(outp)

# 指定词条词向量
model['happy']

array([ 8.10116410e-01, 5.25403082e-01, -3.36705118e-01,
-4.42356855e-01, -2.04296446e+00, -9.93114054e-01,

1.20443761e+00, -3.73263896e-01, 1.15821147e+00,
-1.95465660e+00, 2.11104417e+00], dtype=float32)

result = model.most_similar(u"queeen")
for e in result:
print(e[0],e[1])

queen" 0.8662827014923096
mcqueen 0.8575066924095154
queenie 0.8428698182106018
queens 0.7900538444519043
queer 0.7410856485366821
queezy 0.7156778573989868
queenstown 0.7068071365356445
quen 0.7057324647903442
queensland 0.7055833339691162


Glove

环境:

python 3.6.1

官方glove:https://github.com/stanfordnlp/GloVe
笔者使用:https://github.com/maciejkula/glove-python

安装:
pip install glove_python


训练

from __future__ import print_function
import argparse
import pprint
import gensim
from glove import Glove
from glove import Corpus
from gensim.models.word2vec import LineSentence
inp='./data/processed_160Msemeval-2016-2017-task3-QAText'
outp='glove_model/QAText_200d'
n_dim=200
corpus_model = Corpus()
corpus_model.fit(LineSentence(inp), window=5)
#corpus_model.save('corpus.model')
print('Dict size: %s' % len(corpus_model.dictionary))
print('Collocations: %s' % corpus_model.matrix.nnz)
glove = Glove(no_components=n_dim, learning_rate=0.05)
glove.fit(corpus_model.matrix, epochs=10,
no_threads=1, verbose=True)
glove.add_dictionary(corpus_model.dictionary)
glove.save(outp)

使用

from glove import Glove
outp='../word-Vectorization/glove_model/glove_model_160w_200d'
glove = Glove.load(outp)

glove.most_similar('happiness', number=10)

[(‘optimism’, 0.88474224538009472),
(‘technology’, 0.87399374238355365),
(‘photography’, 0.87293168487727013),
(‘jquery’, 0.87160586331482937),
(‘excitement’, 0.87015550639464156),
(‘mailplane’, 0.86709197956363315),
(‘secrets’, 0.86616698912523094),
(‘laughter’, 0.86593359775060097),
(‘records’, 0.86521431383969472)]

# 指定词条词向量
glove.word_vectors[glove.dictionary['happy']]

array([ 0.1824374 , -0.15493986, -0.23131742, -0.20251903, -0.25899053,
0.16043589, -0.11017494, -0.15413852, 0.12485044, 0.28871841,

0.14323183, -0.21197602, -0.18841062, 0.32888953, -0.32943953,
0.15334943, -0.09995708, 0.10678763, 0.12507708, -0.26995188,
0.17373759, -0.17477675, 0.16042781, -0.3823496 , -0.21795925])

参考:
https://www.zybuluo.com/hanxiaoyang/note/472184?tdsourcetag=s_pctim_aiomsg
https://blog.csdn.net/sinat_26917383/article/details/83041424
https://blog.csdn.net/sinat_26917383/article/details/83029140


推荐阅读
  • Allegro总结:1.防焊层(SolderMask):又称绿油层,PCB非布线层,用于制成丝网印板,将不需要焊接的地方涂上防焊剂.在防焊层上预留的焊盘大小要比实际的焊盘大一些,其差值一般 ... [详细]
  • 本文介绍了在Python3中如何使用选择文件对话框的格式打开和保存图片的方法。通过使用tkinter库中的filedialog模块的asksaveasfilename和askopenfilename函数,可以方便地选择要打开或保存的图片文件,并进行相关操作。具体的代码示例和操作步骤也被提供。 ... [详细]
  • baresip android编译、运行教程1语音通话
    本文介绍了如何在安卓平台上编译和运行baresip android,包括下载相关的sdk和ndk,修改ndk路径和输出目录,以及创建一个c++的安卓工程并将目录考到cpp下。详细步骤可参考给出的链接和文档。 ... [详细]
  • 本文介绍了如何使用python从列表中删除所有的零,并将结果以列表形式输出,同时提供了示例格式。 ... [详细]
  • 闭包一直是Java社区中争论不断的话题,很多语言都支持闭包这个语言特性,闭包定义了一个依赖于外部环境的自由变量的函数,这个函数能够访问外部环境的变量。本文以JavaScript的一个闭包为例,介绍了闭包的定义和特性。 ... [详细]
  • Python教学练习二Python1-12练习二一、判断季节用户输入月份,判断这个月是哪个季节?3,4,5月----春 ... [详细]
  • 如何优化Webpack打包后的代码分割
    本文介绍了如何通过优化Webpack的代码分割来减小打包后的文件大小。主要包括拆分业务逻辑代码和引入第三方包的代码、配置Webpack插件、异步代码的处理、代码分割重命名、配置vendors和cacheGroups等方面的内容。通过合理配置和优化,可以有效减小打包后的文件大小,提高应用的加载速度。 ... [详细]
  • 从批量eml文件中提取附件的Python代码实现方法
    本文介绍了使用Python代码从批量eml文件中提取附件的实现方法,包括获取eml附件信息、递归文件夹下所有文件、创建目的文件夹等步骤。通过该方法可以方便地提取eml文件中的附件,并保存到指定的文件夹中。 ... [详细]
  • 第七课主要内容:多进程多线程FIFO,LIFO,优先队列线程局部变量进程与线程的选择线程池异步IO概念及twisted案例股票数据抓取 ... [详细]
  • 使用Ubuntu中的Python获取浏览器历史记录原文: ... [详细]
  • imx6ull开发板驱动MT7601U无线网卡的方法和步骤详解
    本文详细介绍了在imx6ull开发板上驱动MT7601U无线网卡的方法和步骤。首先介绍了开发环境和硬件平台,然后说明了MT7601U驱动已经集成在linux内核的linux-4.x.x/drivers/net/wireless/mediatek/mt7601u文件中。接着介绍了移植mt7601u驱动的过程,包括编译内核和配置设备驱动。最后,列举了关键词和相关信息供读者参考。 ... [详细]
  • 本文介绍了在处理不规则数据时如何使用Python自动提取文本中的时间日期,包括使用dateutil.parser模块统一日期字符串格式和使用datefinder模块提取日期。同时,还介绍了一段使用正则表达式的代码,可以支持中文日期和一些特殊的时间识别,例如'2012年12月12日'、'3小时前'、'在2012/12/13哈哈'等。 ... [详细]
  • 这篇文章主要介绍了Python拼接字符串的七种方式,包括使用%、format()、join()、f-string等方法。每种方法都有其特点和限制,通过本文的介绍可以帮助读者更好地理解和运用字符串拼接的技巧。 ... [详细]
  • 统一知识图谱学习和建议:更好地理解用户偏好
    本文介绍了一种将知识图谱纳入推荐系统的方法,以提高推荐的准确性和可解释性。与现有方法不同的是,本方法考虑了知识图谱的不完整性,并在知识图谱中传输关系信息,以更好地理解用户的偏好。通过大量实验,验证了本方法在推荐任务和知识图谱完成任务上的优势。 ... [详细]
  • 超级简单加解密工具的方案和功能
    本文介绍了一个超级简单的加解密工具的方案和功能。该工具可以读取文件头,并根据特定长度进行加密,加密后将加密部分写入源文件。同时,该工具也支持解密操作。加密和解密过程是可逆的。本文还提到了一些相关的功能和使用方法,并给出了Python代码示例。 ... [详细]
author-avatar
多米音乐_34014997
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有